웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > js

[자바스크립트] instanceof 연산자를 사용해 생성자 알아보기

Last Modified : 2016-04-28 / Created : 2016-04-20
8,801
View Count
자바스크립트의 객체를 배우게되면 함께 배우는 용어들이 존재한다. 그 중에서 인스턴스에 대하여 알아보고 함께 사용되는 연산자 instanceof를 알아보자.



# 인스턴스란?


인스턴스란 객체에서 생성된 또 다른 객체를 의미한다. 자세한 내용은 아래 링크를 확인하면 더욱 자세한 내용을 알 수 있으니 참고하자!

* 바로가기 링크 -> 객체지향언어에서 인스턴스 알아보기


자바스크립트는 instanceof 연산자가 존재한다. 이 연산자는 생성된 인스턴스 객체가 어떤 생성자 함수를 사용하여 생성되었는지 확인하고 불리언값으로 반환하여 주는 유용한 연산자이다. 이 연산자를 사용해 생성자 함수를 확인하는 과정을 예제를 통하여 알아보고자 한다.

먼저 생성자 함수가 필요하다. 이에 대한 코드는 아래와 같다.


Fruit = function(name) {
   this.name = name;


}





Animal = function(name) {
   this.name = name;
}

우선 비교하기 위한 생성자 함수 두 개를 준비한다. 위 두개의 생성자함수 중 하나를 사용하여 한개의 인스턴스를 생성할 것이다. 생성된 인스턴스를 instanceof 연산자를 사용할 경우 어떤 값이 나오는지 확인이 필요하다.


fruit1 = new Fruit('banana');
fruit2 = new Animal('monkey');

fruit1 instanceof Fruit
// true를 반환함




fruit1 instanceof Animal
// false를 반환함

위에서는 fruit1과 fruit2 두 개의 인스턴스를 생성하였고 각각 다른 생성자 함수를 사용하였다. 그 중에서 fruit1 인스턴스는 Fruit 생성자 함수를 사용하였기 때문에 #1과 같이 확인해 볼 수 있다. 그 결과 당연히 true를 반환하였다.

이를 통해 어떤 생성자 함수를 사용하였는지 확인할 수 있는 instanceof 연산자를 예제를 통해 알아보았다. instanceof 연산자가 어떻게 동작하는지는 아래의 과정을 통하여 이루어진다.

1. 인스턴스가 가지고 있는 __proto__ 정보를 가져온다.
2. 객체가 가진 __proto__와 함수의 prototype를 비교한다.
3. 동일한 값을 찾기위해 체인 영역의 전체를 2번의 과정으로 반복한다.


위와 같은 순서를 통하여 원하는 정보를 객체 안에서 찾는 연산과정을 가지게 된다.

Previous

자바스크립트 클로저(closure) 사용한 예제보기

Previous

[자바스크립트] 배열을 역순으로 정렬, reverse()